# Кортежи, тип данных tuple
'''
Кортежи - это тип данных в Python, который похож на список, но является неизменяемым. 
Это означает, что после создания кортежа вы не можете изменять его элементы. 
Кортежи обычно используются для хранения коллекции значений, которые не должны изменяться.
'''
# Чтобы создать кортеж в Python, вы можете перечислить значения в круглых скобках, разделяя их запятыми. 
# Например:
coordinates = (10, 20)

# Вы также можете создать кортеж без использования круглых скобок, просто перечислив значения и разделив их 
# запятыми:
fruits = "apple", "banana", "orange"

# Однако, важно помнить, что для создания кортежа с одним элементом, 
# необходимо добавить запятую после значения:
single_value_tuple = (42,)


# Вы можете получить доступ к элементам кортежа, используя индексы, так же как и в списках:
print(coordinates[0])  # Выводит: 10
print(fruits[1])  # Выводит: banana
print(type(coordinates))  # Выводит: <class 'tuple'>
print(type(fruits))  # Выводит: <class 'tuple'>

'''
Хотя кортежи неизменяемы, вы можете создать новый кортеж на основе существующего кортежа или другой последовательности. 
'''
# Например:
new_coordinates = coordinates + (30, 40)  # Создание нового кортежа на основе существующего кортежа и другого кортежа.
print(new_coordinates)  # Выводит: (10, 20, 30, 40)

# Кортежи также могут быть использованы для присваивания значений нескольким переменным одновременно:
x, y = coordinates
print(x)  # Выводит: 10
print(y)  # Выводит: 20
'''
 Кортежи полезны, когда вам нужно хранить данные, которые не должны изменяться, 
 или когда вам нужно возвращать несколько значений из функции.
'''




# x = (9, 8, 7, 6)
# print(type(x))

# x = (9,)
# print(type(x))

# x = tuple("string")
# print(x)

#    0  1  2
# x = (9, 8, 7)
# print(x[0])
# print(x)

# x = (9, 8, 7)
# print(x[0] + 5)
# print(x)

# x = (9, 8, 7)
# z, c, b = x
# print(x)
# print(z)
# print(c)
# print(b)

# x = (9, 8, 7, 6, 5, 4, 3)
# r = 5
# u = 7
# r, u = u, r
# print(x[1:5])
# print(x)


#    0  1  2  3  4  5  6
# x = [9, 8, 7, 6, 5, 4, 3]   # Список.
# for i in range(len(x)):   # range сгенерирует от 0 до 7 не включая 7. Это будут индексы.
#     x[i] += 3
# print(x)

#    0  1  2  3  4  5  6
# x = (9, 8, 7, 6, 5, 4, 3)   # Картеж.
# for i in range(len(x)):   # range сгенерирует от 0 до 7 не включая 7. Это будут индексы.
#     x[i] += 3
# print(x)   # Возникает ошибка, потому что картеж это не изменяемый тип данных.


#    0  1  2  3  4  5  6
# x = (9, 8, 7, 6, 5, 4, 3)   # Картеж.
# y = []
# for i in range(len(x)):   # range сгенерирует от 0 до 7 не включая 7. Это будут индексы.
#     y.append(x[i] + 3)   # новое значение добавиться в список.
# print(x)
# print(y)

#    0  1  2  3  4  5  6
# x = (9, 8, 7, 6, 5, 4, 3)  # Картеж.
# y = []
# for i in range(len(x)):  # range сгенерирует от 0 до 7 не включая 7. Это будут индексы.
#     y.append(x[i] + 3)  # новое значение добавиться в список.
# print(y)
# print(x)
# t = list(x)
# t[0] = 10
# x = tuple(t)
# print(x)


#    0  1  2  3  4  5  6
# x = (9, 8, 7, 6, 5, 9, 4, 3)  # Картеж.
# print(x.count(9))   # Узнаем сколько девяток входит в картеж. Метод x.count
#
# #    0  1  2  3  4  5  6
# x = (9, 8, 7, 6, 5, 9, 4, 3)  # Картеж.
# print(x.index(9))   # Узнаем индекс элемента 9 Метод x.index (но только первой девятки вторую он не выведет)


# К кортежу можно добавить еще один кортеж
# h = (1, 2, 3)
# h += (4, 5)
# print(h)

# h = (1, 2, 3)
# g = h
# h += (4, 5)
# print(h)
# print(g)

